package com.xuetang9.controller.a.defect;

import com.xuetang9.domain.User;
import com.xuetang9.dto.InputDto;
import com.xuetang9.dto.a.ListRequestDTO;
import com.xuetang9.dto.a.ModifyDefectLevelDTO;
import com.xuetang9.service.DefectService;
import com.xuetang9.vo.JsonResultVO;
import com.xuetang9.vo.ListVO;
import com.xuetang9.vo.a.ConfirmDefectVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @工能 处理缺陷管理模块的请求
 * @作者 杜目杰
 * @时间 2020/5/18
 * @地点 公司
 * @版本 1.0.0
 * @版权 老九学堂
 */
@Controller("DefectControllerA")
@CrossOrigin
@ResponseBody
public class DefectController {
    @Autowired
    @Qualifier("DefectServiceImplA")
    DefectService defectService;

    /**
     * 修改缺陷等级
     *
     * @param in 用户添加请求参数
     * @return 执行结果
     */
    @PostMapping("/flaw/update")
    public JsonResultVO insertInto(@RequestBody List<ModifyDefectLevelDTO> in) {
        JsonResultVO<User> jsonResultVO = new JsonResultVO<>();

        // 保存执行添加的结果
        int result = -1;
        // 记录修改成功的次数
        int times = 0;
        // 传入为空直接返回空防止资源浪费
        if (in == null) {
            jsonResultVO.setMessage("数据为空");
            jsonResultVO.setCode(500);
            return jsonResultVO;
        }
        for (int i = 0; i < in.size() ; i++) {
            ModifyDefectLevelDTO input = in.get(i);
            System.out.println(input);
            // 执行添加并得到结果
            InputDto inputDto = new InputDto();
            inputDto.function = "修改缺陷等级";
            inputDto.date = input;
            // 执行添加并得到结果
            try {
                result = defectService.confirmDefectLevel(inputDto);
            } catch (Exception e) {
                jsonResultVO.setMessage("修改失败");
                jsonResultVO.setCode(500);
            }
            if (result > -1) {
                times++;
                jsonResultVO.setMessage("成功修改" + times);
                jsonResultVO.setCode(200);
            }
        }
        // 根据结果返回对应的数字 101代表失败 100代表成功
        return jsonResultVO;
    }
    /**
     *  处理缺陷管理模块的显示列表查询
     * @param listRequestDTO 用户查询请求参数
     * @return 前端用户查询显示类容
     */
    @PostMapping("/flaw/query")
    public JsonResultVO listUser(@RequestBody ListRequestDTO<ConfirmDefectVO> listRequestDTO){
        JsonResultVO<ListVO> jsonResultVO = new JsonResultVO<>();
        // 用来保存需要返回的数据
        ListVO listUserVO = null;
        // 传入为空直接返回空防止资源浪费
        if (listRequestDTO == null){
            jsonResultVO.setCode(500);
            jsonResultVO.setMessage("没有数据");
            return jsonResultVO;
        }
        // 创建业务执行输入对象
        InputDto inputDto = new InputDto();
        inputDto.function = "查询缺陷等级列表";
        inputDto.date = listRequestDTO;
        // 得到显示数据
        try {
            listUserVO = defectService.defectLevelView(inputDto);
        }catch (Exception e){
            jsonResultVO.setMessage("查询失败");
            jsonResultVO.setCode(500);
        }
        //将显示数据放入返回前端的请求返回对象中
        jsonResultVO.setData(listUserVO);
        jsonResultVO.setCode(200);
        return  jsonResultVO;
    }
}
